Skip to main content

内存泄漏

内存泄露是指你用不到(访问不到)的变量,依然占居着内存空间,不能被再次利用起来。

常见的内存泄漏的原因

虽然 JavaScript 会自动垃圾收集,但是如果我们的代码没有及时清空一些被调用的东西,就会让变量一直处于无法回收状态。

全局变量引起

由于使用未声明的变量,而意外的创建了一个全局变量,而使这个变量一直留在内存中无法被回收。

function leaks() {
leak = 'xxxxxx' //leak 成为一个全局变量,不会被回收
}

闭包(错解,但能过)

不合理的使用闭包,从而导致某些变量一直被留在内存当中。

var leaks = (function () {
var leak = 'xxxxxx' // 被闭包所引用,不会被回收
return function () {
console.log(leak)
}
})()

被遗忘的计时器或回调函数

设置了 setInterval 定时器,而忘记取消它,如果循环函数有对外部变量的引用的话,那么这个变量会被一直留

存在引用

获取一个 DOM 元素的引用,而后面这个元素被删除,由于我们一直保留了对这个元素的引用,所以它也无法被回收。

参考文章:https://www.jianshu.com/p/5a165812aaa8